/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Negocio;

import DAO.AutorDAO;
import DAO.MetadatosDAO;
import DAO.ObjetoAprendizajeDAO;
import DAO.TemaDAO;
import DAO.UsuarioDAO;
import Entidades.ObjetoAprendizajeEnt;
import Entidades.SFTPFileCopy1;
import Entidades.UsuarioEnt;
import Utilidades.Constantes;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author usuario
 */
public class ObjetoAprendizajeNeg {
    
        ObjetoAprendizajeDAO objetoAprendizajeDAO;
        TemaDAO temaDAO;
        AutorDAO autorDAO;
        MetadatosDAO metadatosDAO;
        UsuarioDAO usuarioDAO;
    
        public List<ObjetoAprendizajeEnt> busquedaTOPObjetosAprendizaje() throws SQLException{
    
                List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje = new ArrayList<ObjetoAprendizajeEnt>();
                objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
                lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaTOPObjetos();

                return lstObjetoAprendizaje;
        }
        public int ingresarObjetosAprendizaje(ObjetoAprendizajeEnt objAprendizaje, int idUsuario) throws SQLException{
    
                int ingresado = 0;
                int idMetadato;
                int idAutor;
                int idTema;
                
                
                objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
                temaDAO = new TemaDAO();
                autorDAO = new AutorDAO();
                metadatosDAO = new MetadatosDAO();
                
                String[] metadatos =  new String[10];
                String[] metad;
                metad = objAprendizaje.getStrMetadatos().split(",");

               for (int i = 0; i < metadatos.length; i++) {
                    metadatos[i] = "null";   
                }
                for (int i = 0; i < metad.length; i++) {
                    metadatos[i] = "null";
                    metadatos[i] = metad[i];     
                }
                
                objAprendizaje.getMetadatos().setMetadato1(metadatos[0]);
                objAprendizaje.getMetadatos().setMetadato2(metadatos[1]);
                objAprendizaje.getMetadatos().setMetadato3(metadatos[2]);
                objAprendizaje.getMetadatos().setMetadato4(metadatos[3]);
                objAprendizaje.getMetadatos().setMetadato5(metadatos[4]);
                objAprendizaje.getMetadatos().setMetadato6(metadatos[5]);
                objAprendizaje.getMetadatos().setMetadato7(metadatos[6]);
                objAprendizaje.getMetadatos().setMetadato8(metadatos[7]);
                objAprendizaje.getMetadatos().setMetadato9(metadatos[8]);
                objAprendizaje.getMetadatos().setMetadato10(objAprendizaje.getNombre());
                
                idMetadato = metadatosDAO.ingresarMetadata(objAprendizaje.getMetadatos());
                objAprendizaje.getMetadatos().setCodigo(idMetadato);
                
                idAutor = autorDAO.ingresarAutor(objAprendizaje.getAutor());
                objAprendizaje.getAutor().setCodigo(idAutor);
               
                ingresado = objetoAprendizajeDAO.ingresarObjetoAprendizaje(objAprendizaje, idUsuario);
                objAprendizaje.setURL("www.prueba.com");
                enviarCorreoCoordinador(objAprendizaje);
                return ingresado;
 
        }
        
        
        public List<ObjetoAprendizajeEnt> busquedabjetosAprendizaje(String metadato) throws SQLException{
    
                List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje = new ArrayList<ObjetoAprendizajeEnt>();
                objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
                lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaObjetos(metadato);

                return lstObjetoAprendizaje;
        }
        
    public ObjetoAprendizajeEnt busquedaObjetosPorId(String id) throws SQLException{
    

        ObjetoAprendizajeEnt objAprend = new ObjetoAprendizajeEnt();
        objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
        objAprend = objetoAprendizajeDAO.busquedaObjetosPorId(id);
        return objAprend;
    }    
    
   public int ingresarFavorito(int idUsuario, int idObjeto) throws SQLException{
             
             int guardado;
             objetoAprendizajeDAO = new ObjetoAprendizajeDAO();               
             guardado = objetoAprendizajeDAO.ingresarFavorito(idUsuario, idObjeto);
             return guardado;    
        }
   
   
       public List<ObjetoAprendizajeEnt> busquedaFavoritosObjetos(int idUsuario) throws SQLException{
    
        List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje = new ArrayList<ObjetoAprendizajeEnt>();
        objetoAprendizajeDAO = new ObjetoAprendizajeDAO();

        lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaFavoritosObjetos(idUsuario);

        return lstObjetoAprendizaje;
    }
       
       
        public List<ObjetoAprendizajeEnt> busquedaObjetosTemporales() throws SQLException{
    
         List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje = new ArrayList<ObjetoAprendizajeEnt>();
         objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
         lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaObjetosTemporales();


        return lstObjetoAprendizaje;
    }
        
        
  public List<ObjetoAprendizajeEnt> busquedaTemporalesObjetos(String fechaInicio, String fechaFin) throws SQLException{
    
        List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje = new ArrayList<ObjetoAprendizajeEnt>();

         objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
         lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaTemporalesObjetos(fechaInicio, fechaFin);
        

        return lstObjetoAprendizaje;
    }
  
  
         public int eliminarObjeto(int idObjeto) throws SQLException{
             
             int eliminado = 0;
             String eliminadoFTP = "0";
             String  eliminadoCARTA = "0";
             SFTPFileCopy1 negFTP;
             negFTP = new SFTPFileCopy1();
             ObjetoAprendizajeEnt objAprn;
             objAprn =  busquedaObjetosPorId(String.valueOf(idObjeto));
             try {
                
                    eliminadoFTP = negFTP.deleteFile(objAprn.getRutaArchivo());
                    eliminadoCARTA = negFTP.deleteFile(objAprn.getURL());
                
             } catch (FileNotFoundException ex) {
                Logger.getLogger(ObjetoAprendizajeNeg.class.getName()).log(Level.SEVERE, null, ex);
             } catch (IOException ex) {
                Logger.getLogger(ObjetoAprendizajeNeg.class.getName()).log(Level.SEVERE, null, ex);
             }
             
             
             if(eliminadoFTP.equals("1") && eliminadoCARTA.equals("1")){
                 
                    objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
                    eliminado = objetoAprendizajeDAO.eliminarObjeto(idObjeto);
             }

             return eliminado;  
             
        }
     
          public int aprobado(int idObjeto) throws SQLException{
             
             int aprobado;
             objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
             aprobado = objetoAprendizajeDAO.aprobado(idObjeto);
             return aprobado;  
             
        }
          
        public int actualizarObjetoAprendizaje(ObjetoAprendizajeEnt objAprendizaje) throws SQLException{

             int actualizado;
             objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
             actualizado = objetoAprendizajeDAO.actualizarObjetoAprendizaje(objAprendizaje);
             return actualizado;  
             
        }
        
        public int numeroVisitas(int idObjeto) throws SQLException{
            
                int actualizado;
                objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
                actualizado = objetoAprendizajeDAO.numeroVisitas(idObjeto);
                return actualizado;  
             
        }
        
        
        public int enviarCorreoCoordinador(ObjetoAprendizajeEnt objAprendizaje){
            
            int enviado = 0;
            try {
                
                
                String cuerpo;
                List<UsuarioEnt>  lstUsuario;
                UsuarioEnt usuarioEnt = new UsuarioEnt();
                usuarioEnt.setNombre("COORDINADOR");
                usuarioDAO = new UsuarioDAO();
                lstUsuario = usuarioDAO.busquedaUsuarios(usuarioEnt);
                
                cuerpo = Constantes.ESTANDAR_CORREO;
                cuerpo= cuerpo.replace("<NOMBRE_COORDINADOR>", lstUsuario.get(0).getNombrePersona());
                cuerpo= cuerpo.replace("<NOMBRE_OBJETO>", objAprendizaje.getNombre());
                cuerpo= cuerpo.replace("<NOMBRE_AUTOR>", objAprendizaje.getAutor().getNombre());
                cuerpo= cuerpo.replace("<OBJETIVO_GENERAL>", objAprendizaje.getObjetivoGeneral());
                cuerpo= cuerpo.replace("<OBJETIVOS_ESPECIFICOS>", objAprendizaje.getObjetivoEspecifico());
                cuerpo= cuerpo.replace("<RESUMEN>", objAprendizaje.getResumen());
                cuerpo= cuerpo.replace("<URL>", objAprendizaje.getRutaArchivo());
                
                CorreoNeg correo = new CorreoNeg(lstUsuario.get(0).getCorreoElectronico().trim(), "Nuevo Objeto Aprendizaje", cuerpo);
                
            } catch (SQLException ex) {
                Logger.getLogger(ObjetoAprendizajeNeg.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            return enviado;
        }
        
        
        
        public List<ObjetoAprendizajeEnt> busquedaPorAutorObjetos(String autor) throws SQLException{
    
            List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje;
            objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
            lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaPorAutorObjetos(autor);
            
            return lstObjetoAprendizaje;
        }
        
        public List<ObjetoAprendizajeEnt> busquedaPorTemaObjetos(String tema) throws SQLException{
    
            List<ObjetoAprendizajeEnt>  lstObjetoAprendizaje = new ArrayList<ObjetoAprendizajeEnt>();
            objetoAprendizajeDAO = new ObjetoAprendizajeDAO();
            lstObjetoAprendizaje = objetoAprendizajeDAO.busquedaPorTemaObjetos(tema);

            return lstObjetoAprendizaje;
    }
        
}
